package com.example.product.biz.service;

import com.example.common.domain.PageResult;
import com.example.product.biz.domain.dto.ProductSearchDTO;
import com.example.product.biz.domain.vo.ProductDetailVO;
import com.example.product.biz.domain.vo.RecommendProductVO;
import com.example.product.domain.dto.ItemDTO;
import com.example.product.domain.vo.ProductVO;
import com.fasterxml.jackson.core.JsonProcessingException;

import java.util.List;
import java.util.Map;

public interface ProductService {
    /**
     * 获取商品信息
     * @param page
     * @param pageSize
     * @return
     */
    PageResult<RecommendProductVO> getProduct(Integer page, Integer pageSize);

    /**
     * 根据id获取商品详情信息
     * @param id
     * @return
     */
    ProductDetailVO getProductById(Integer id);


    /**
     * 批量获取商品信息
     * @param ids
     * @return
     */
    Map<Long, ProductVO> getProductToMap(List<Long> ids);

    /**
     * 扣减库存
     * @param itemDTO
     */
    void deductStock(List<ItemDTO> itemDTO);

    /**
     * 恢复库存
     * @param skuId
     * @param num
     */
    void restoreStock(Integer skuId, Integer num);

    PageResult<RecommendProductVO> searchProduct(ProductSearchDTO searchDTO);

    void syncAllProductsToElasticsearch();
}
